{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "777da1c9-cc9c-4ea6-b56c-74387bb74840",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import cv2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "53f84964-4527-4f9a-ad14-bcddc97be377",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[100 101 102]\n",
      "  [103 104 105]\n",
      "  [106 107 108]\n",
      "  [109 110 111]\n",
      "  [112 113 114]]\n",
      "\n",
      " [[115 116 117]\n",
      "  [118 119 120]\n",
      "  [121 122 123]\n",
      "  [124 125 126]\n",
      "  [127 128 129]]\n",
      "\n",
      " [[130 131 132]\n",
      "  [133 134 135]\n",
      "  [136 137 138]\n",
      "  [139 140 141]\n",
      "  [142 143 144]]\n",
      "\n",
      " [[145 146 147]\n",
      "  [148 149 150]\n",
      "  [151 152 153]\n",
      "  [154 155 156]\n",
      "  [157 158 159]]]\n",
      "[[[100 101 102]\n",
      "  [103 104 105]\n",
      "  [106 107 108]\n",
      "  [109 110 111]\n",
      "  [112 113 114]\n",
      "  [100 101 102]\n",
      "  [103 104 105]\n",
      "  [106 107 108]\n",
      "  [109 110 111]\n",
      "  [112 113 114]\n",
      "  [100 101 102]\n",
      "  [103 104 105]\n",
      "  [106 107 108]\n",
      "  [109 110 111]\n",
      "  [112 113 114]\n",
      "  [100 101 102]\n",
      "  [103 104 105]\n",
      "  [106 107 108]\n",
      "  [109 110 111]\n",
      "  [112 113 114]]\n",
      "\n",
      " [[115 116 117]\n",
      "  [118 119 120]\n",
      "  [121 122 123]\n",
      "  [124 125 126]\n",
      "  [127 128 129]\n",
      "  [115 116 117]\n",
      "  [118 119 120]\n",
      "  [121 122 123]\n",
      "  [124 125 126]\n",
      "  [127 128 129]\n",
      "  [115 116 117]\n",
      "  [118 119 120]\n",
      "  [121 122 123]\n",
      "  [124 125 126]\n",
      "  [127 128 129]\n",
      "  [115 116 117]\n",
      "  [118 119 120]\n",
      "  [121 122 123]\n",
      "  [124 125 126]\n",
      "  [127 128 129]]\n",
      "\n",
      " [[130 131 132]\n",
      "  [133 134 135]\n",
      "  [136 137 138]\n",
      "  [139 140 141]\n",
      "  [142 143 144]\n",
      "  [130 131 132]\n",
      "  [133 134 135]\n",
      "  [136 137 138]\n",
      "  [139 140 141]\n",
      "  [142 143 144]\n",
      "  [130 131 132]\n",
      "  [133 134 135]\n",
      "  [136 137 138]\n",
      "  [139 140 141]\n",
      "  [142 143 144]\n",
      "  [130 131 132]\n",
      "  [133 134 135]\n",
      "  [136 137 138]\n",
      "  [139 140 141]\n",
      "  [142 143 144]]\n",
      "\n",
      " [[145 146 147]\n",
      "  [148 149 150]\n",
      "  [151 152 153]\n",
      "  [154 155 156]\n",
      "  [157 158 159]\n",
      "  [145 146 147]\n",
      "  [148 149 150]\n",
      "  [151 152 153]\n",
      "  [154 155 156]\n",
      "  [157 158 159]\n",
      "  [145 146 147]\n",
      "  [148 149 150]\n",
      "  [151 152 153]\n",
      "  [154 155 156]\n",
      "  [157 158 159]\n",
      "  [145 146 147]\n",
      "  [148 149 150]\n",
      "  [151 152 153]\n",
      "  [154 155 156]\n",
      "  [157 158 159]]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "m = np.array(range(100,160))\n",
    "m=m.reshape(4,5,3)\n",
    "print(m)\n",
    "m=np.hstack((m,m,m,m))\n",
    "plt.imshow(m)\n",
    "print(m)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6676aa6-93f5-41a2-ad2c-6b449a5ac3e3",
   "metadata": {
    "jupyter": {
     "source_hidden": true
    }
   },
   "source": [
    "## 一维数组堆叠"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "072b7844-8638-48c8-ae07-67e5fedd6f85",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1  2  3 10 20 30]\n",
      "[ 1  2  3 10 20 30]\n",
      "[[ 1  2  3]\n",
      " [10 20 30]]\n"
     ]
    }
   ],
   "source": [
    "b=np.array([1,2,3])\n",
    "c=np.array([10,20,30])\n",
    "print(np.hstack((b,c)))\n",
    "print(np.concatenate((b,c),axis=0))\n",
    "print(np.vstack((b,c)))\n",
    "# print(np.concatenate((b,c),axis=1))  报错,a和b都是一维数据，只有一个维度，也就是axis=0，不存在axis=1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3c1f3d86-a27a-4fa2-9428-acaee6edc47e",
   "metadata": {},
   "source": [
    "## 二维数组堆叠"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "79dd2fc5-e305-4f19-a78f-8a0163bdc514",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2, 3)\n",
      "[[ 1  2  3 10 20 30]\n",
      " [ 4  5  6 40 50 60]]\n",
      "[[ 1  2  3 10 20 30]\n",
      " [ 4  5  6 40 50 60]]\n",
      "[[ 1  2  3]\n",
      " [ 4  5  6]\n",
      " [10 20 30]\n",
      " [40 50 60]]\n",
      "[[ 1  2  3]\n",
      " [ 4  5  6]\n",
      " [10 20 30]\n",
      " [40 50 60]]\n"
     ]
    }
   ],
   "source": [
    "bb=np.array([[1,2,3],[4,5,6]])\n",
    "cc=np.array([[10,20,30],[40,50,60]])\n",
    "print(cc.shape)\n",
    "print(np.hstack((bb,cc)))\n",
    "print(np.concatenate((bb,cc),axis=1))\n",
    "print(np.vstack((bb,cc)))\n",
    "print(np.concatenate((bb,cc),axis=0))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a98b55d-1cc9-4e34-9c1d-e9278499bf9f",
   "metadata": {},
   "source": [
    "## 三维数组堆叠"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "32072835-5949-4042-9d8e-ff05ff19bda1",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "bbb.shape:  (2, 2, 3)\n",
      "水平 [[[  1 200   3]\n",
      "  [ 40   5   6]\n",
      "  [100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]\n",
      "  [100 200  30]\n",
      "  [100  50  60]]]\n",
      "水平 [[[  1 200   3]\n",
      "  [ 40   5   6]\n",
      "  [100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]\n",
      "  [100 200  30]\n",
      "  [100  50  60]]]\n",
      "垂直 [[[  1 200   3]\n",
      "  [ 40   5   6]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100 200  30]\n",
      "  [100  50  60]]]\n",
      "垂直 [[[  1 200   3]\n",
      "  [ 40   5   6]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100  20  30]\n",
      "  [ 40  50  60]]\n",
      "\n",
      " [[100 200  30]\n",
      "  [100  50  60]]]\n",
      "深度 [[[  1 200   3 100  20  30]\n",
      "  [ 40   5   6  40  50  60]]\n",
      "\n",
      " [[100  20  30 100 200  30]\n",
      "  [ 40  50  60 100  50  60]]]\n",
      "深度 [[[  1 200   3 100  20  30]\n",
      "  [ 40   5   6  40  50  60]]\n",
      "\n",
      " [[100  20  30 100 200  30]\n",
      "  [ 40  50  60 100  50  60]]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x20b0a977c08>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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kZFaunSphg4desGePB6PQkNDpexABTQLqKU9BS4vMbcH1XcLgN+UG6M9ZWdVVFQkp9Ppl2349RXkmTNnlJeXp+Tk5H9sMDBQycnJys3Nta6Tm5vrUy9JKSkp3vr8/Hy53W6fmtDQUCUmJp53ztLSUnk8Hp8FAICq+DUgjx8/rvLyckVGRvqMR0ZGyu12W9dxu91V1p/7szpzzpo1S6Ghod6ldevWNdofAEDD0SDOYs3IyFBRUZF3OXDgQH23BAC4zPk1ICMiIhQUFKSCggKf8YKCArlcLus6Lperyvpzf1ZnTofDIafT6bMAAFAVvwZkcHCwevTooezsbO9YRUWFsrOzlZSUZF0nKSnJp16SNm7c6K1v3769XC6XT43H49HmzZvPOycAANXVyN8bSE9P18iRI9WzZ0/16tVL8+fPV0lJidLS0iRJI0aM0LXXXqtZs2ZJkh577DH17t1b//3f/60BAwZo5cqV+uyzz/Tyyy9LkgICAvT444/rd7/7nTp37qz27dtr8uTJio6O1uDBg/29OwCABsLvATlkyBAdO3ZMU6ZMkdvtVkJCgrKysrwn2ezfv1+Bgf94IXvrrbfq9ddf19NPP63f/va36ty5s9atW6cbb7zRW/PUU0+ppKREY8eOVWFhoW677TZlZWUpJCTE37sDAGgg/H4d5OWI6yDREHAdJK5mV/x1kAAAXKkISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAs6iQgMzMz1a5dO4WEhCgxMVFbtmw5b+3ChQt1++23q0WLFmrRooWSk5Mr1Y8aNUoBAQE+S2pqqr93AwDQgPg9IFetWqX09HRNnTpVW7duVXx8vFJSUnT06FFrfU5OjoYNG6YPPvhAubm5at26tfr166dDhw751KWmpurIkSPeZcWKFf7eFQBAAxJgjDH+3EBiYqJuvvlmvfjii5KkiooKtW7dWo888ogmTZp0wfXLy8vVokULvfjiixoxYoSkH19BFhYWat26dRfVQ2lpqUpLS72PPR6PWrduLWUHKqBZQPV3CrgCxNweVN8tAH5Tboz2lJ1VUVGRnE6nX7bh11eQZ86cUV5enpKTk/+xwcBAJScnKzc396LmOH36tM6ePavw8HCf8ZycHLVq1UoxMTEaN26cTpw4cd45Zs2apdDQUO/SunXrmu0QAKDB8GtAHj9+XOXl5YqMjPQZj4yMlNvtvqg5Jk6cqOjoaJ+QTU1N1fLly5Wdna05c+bob3/7m/r376/y8nLrHBkZGSoqKvIuBw4cqPlOAQAahEb13UBVZs+erZUrVyonJ0chISHe8aFDh3p/jouLU7du3dSxY0fl5OSob9++leZxOBxyOBx10jMA4Org11eQERERCgoKUkFBgc94QUGBXC5XlevOmzdPs2fP1oYNG9StW7cqazt06KCIiAjt3bv3knsGAEDyc0AGBwerR48eys7O9o5VVFQoOztbSUlJ511v7ty5mjlzprKystSzZ88LbufgwYM6ceKEoqKiaqVvAAD8fplHenq6Fi5cqGXLlmnXrl0aN26cSkpKlJaWJkkaMWKEMjIyvPVz5szR5MmTtXjxYrVr105ut1tut1vFxcWSpOLiYk2YMEGbNm3SN998o+zsbA0aNEidOnVSSkqKv3cHANBA+P0zyCFDhujYsWOaMmWK3G63EhISlJWV5T1xZ//+/QoM/EdOv/TSSzpz5oz+/d//3WeeqVOnatq0aQoKCtIXX3yhZcuWqbCwUNHR0erXr59mzpzJ54wAgFrj9+sgL0cej0ehoaFcB4mrGtdB4mp2xV8HCQDAlYqABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAok4CMjMzU+3atVNISIgSExO1ZcuW89YuXbpUAQEBPktISIhPjTFGU6ZMUVRUlJo0aaLk5GTt2bPH37sBAGhA/B6Qq1atUnp6uqZOnaqtW7cqPj5eKSkpOnr06HnXcTqdOnLkiHf59ttvfZ6fO3euXnjhBS1YsECbN29Ws2bNlJKSoh9++MHfuwMAaCD8HpDPPfecxowZo7S0NMXGxmrBggVq2rSpFi9efN51AgIC5HK5vEtkZKT3OWOM5s+fr6efflqDBg1St27dtHz5ch0+fFjr1q2zzldaWiqPx+OzAABQlUb+nPzMmTPKy8tTRkaGdywwMFDJycnKzc0973rFxcVq27atKioqdNNNN+mZZ55R165dJUn5+flyu91KTk721oeGhioxMVG5ubkaOnRopflmzZql6dOnVxof8etoBQfyMSyuTh/FtanvFgD/KS+TPt/k1034NR2OHz+u8vJyn1eAkhQZGSm3221dJyYmRosXL9abb76pV199VRUVFbr11lt18OBBSfKuV505MzIyVFRU5F0OHDhwqbsGALjK+fUVZE0kJSUpKSnJ+/jWW2/VDTfcoD/96U+aOXNmjeZ0OBxyOBy11SIAoAHw6yvIiIgIBQUFqaCgwGe8oKBALpfrouZo3Lixunfvrr1790qSd71LmRMAgAvxa0AGBwerR48eys7O9o5VVFQoOzvb51ViVcrLy7Vjxw5FRUVJktq3by+Xy+Uzp8fj0ebNmy96TgAALsTvb7Gmp6dr5MiR6tmzp3r16qX58+erpKREaWlpkqQRI0bo2muv1axZsyRJM2bM0C233KJOnTqpsLBQzz77rL799ls98MADkn48w/Xxxx/X7373O3Xu3Fnt27fX5MmTFR0drcGDB/t7dwAADYTfA3LIkCE6duyYpkyZIrfbrYSEBGVlZXlPstm/f78Cf3Im6XfffacxY8bI7XarRYsW6tGjhz755BPFxsZ6a5566imVlJRo7NixKiws1G233aasrKxKXygAAEBNBRhjTH03Udc8Ho9CQ0M1Ivw6LvPAVeujNlzmgatXeXmZ9ny+SUVFRXI6nX7ZBukAAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgAUBCQCABQEJAIAFAQkAgEWdBGRmZqbatWunkJAQJSYmasuWLeet7dOnjwICAiotAwYM8NaMGjWq0vOpqal1sSsAgAaikb83sGrVKqWnp2vBggVKTEzU/PnzlZKSot27d6tVq1aV6teuXaszZ854H584cULx8fH69a9/7VOXmpqqJUuWeB87HA7/7QQAoMHx+yvI5557TmPGjFFaWppiY2O1YMECNW3aVIsXL7bWh4eHy+VyeZeNGzeqadOmlQLS4XD41LVo0cLfuwIAaED8GpBnzpxRXl6ekpOT/7HBwEAlJycrNzf3ouZYtGiRhg4dqmbNmvmM5+TkqFWrVoqJidG4ceN04sSJ885RWloqj8fjswAAUBW/BuTx48dVXl6uyMhIn/HIyEi53e4Lrr9lyxbt3LlTDzzwgM94amqqli9fruzsbM2ZM0d/+9vf1L9/f5WXl1vnmTVrlkJDQ71L69ata75TAIAGwe+fQV6KRYsWKS4uTr169fIZHzp0qPfnuLg4devWTR07dlROTo769u1baZ6MjAylp6d7H3s8HkISAFAlv76CjIiIUFBQkAoKCnzGCwoK5HK5qly3pKREK1eu1OjRoy+4nQ4dOigiIkJ79+61Pu9wOOR0On0WAACq4teADA4OVo8ePZSdne0dq6ioUHZ2tpKSkqpcd82aNSotLdV99913we0cPHhQJ06cUFRU1CX3DACAVAdnsaanp2vhwoVatmyZdu3apXHjxqmkpERpaWmSpBEjRigjI6PSeosWLdLgwYN1zTXX+IwXFxdrwoQJ2rRpk7755htlZ2dr0KBB6tSpk1JSUvy9OwCABsLvn0EOGTJEx44d05QpU+R2u5WQkKCsrCzviTv79+9XYKBvTu/evVsfffSRNmzYUGm+oKAgffHFF1q2bJkKCwsVHR2tfv36aebMmVwLCQCoNQHGGFPfTdQ1j8ej0NBQjQi/TsGBfNserk4ftWlT3y0AflNeXqY9n29SUVGR384rIR0AALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsCAgAQCwICABALAgIAEAsPBrQH744YcaOHCgoqOjFRAQoHXr1l1wnZycHN10001yOBzq1KmTli5dWqkmMzNT7dq1U0hIiBITE7Vly5babx4A0KD5NSBLSkoUHx+vzMzMi6rPz8/XgAEDdMcdd2j79u16/PHH9cADD+jdd9/11qxatUrp6emaOnWqtm7dqvj4eKWkpOjo0aP+2g0AQAMUYIwxdbKhgAC98cYbGjx48HlrJk6cqHfeeUc7d+70jg0dOlSFhYXKysqSJCUmJurmm2/Wiy++KEmqqKhQ69at9cgjj2jSpEkX1YvH41FoaKhGhF+n4EDeZcbV6aM2beq7BcBvysvLtOfzTSoqKpLT6fTLNi6rdMjNzVVycrLPWEpKinJzcyVJZ86cUV5enk9NYGCgkpOTvTU2paWl8ng8PgsAAFW5rALS7XYrMjLSZywyMlIej0fff/+9jh8/rvLycmuN2+0+77yzZs1SaGiod2ndurVf+gcAXD0uq4D0l4yMDBUVFXmXAwcO1HdLAIDLXKP6buCnXC6XCgoKfMYKCgrkdDrVpEkTBQUFKSgoyFrjcrnOO6/D4ZDD4fBLzwCAq9Nl9QoyKSlJ2dnZPmMbN25UUlKSJCk4OFg9evTwqamoqFB2dra3BgCA2uDXgCwuLtb27du1fft2ST9exrF9+3bt379f0o9vfY4YMcJb/+CDD+rvf/+7nnrqKX399df64x//qNWrV+uJJ57w1qSnp2vhwoVatmyZdu3apXHjxqmkpERpaWn+3BUAQAPj17dYP/vsM91xxx3ex+np6ZKkkSNHaunSpTpy5Ig3LCWpffv2euedd/TEE0/o97//va677jq98sorSklJ8dYMGTJEx44d05QpU+R2u5WQkKCsrKxKJ+4AAHAp6uw6yMsJ10GiIeA6SFzNGtx1kAAAXC4ISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALAhIAAAsCEgAACwISAAALPwakB9++KEGDhyo6OhoBQQEaN26dVXWr127Vnfeeadatmwpp9OppKQkvfvuuz4106ZNU0BAgM/SpUsXP+4FAKAh8mtAlpSUKD4+XpmZmRdV/+GHH+rOO+/U+vXrlZeXpzvuuEMDBw7Utm3bfOq6du2qI0eOeJePPvrIH+0DABqwRv6cvH///urfv/9F18+fP9/n8TPPPKM333xTb7/9trp37+4db9SokVwuV221CQBAJZf1Z5AVFRU6deqUwsPDfcb37Nmj6OhodejQQcOHD9f+/furnKe0tFQej8dnAQCgKpd1QM6bN0/FxcW65557vGOJiYlaunSpsrKy9NJLLyk/P1+33367Tp06dd55Zs2apdDQUO/SunXrumgfAHAFu2wD8vXXX9f06dO1evVqtWrVyjvev39//frXv1a3bt2UkpKi9evXq7CwUKtXrz7vXBkZGSoqKvIuBw4cqItdAABcwfz6GWRNrVy5Ug888IDWrFmj5OTkKmvDwsJ0/fXXa+/eveetcTgccjgctd0mAOAqdtm9glyxYoXS0tK0YsUKDRgw4IL1xcXF2rdvn6KiouqgOwBAQ+HXV5DFxcU+r+zy8/O1fft2hYeHq02bNsrIyNChQ4e0fPlyST++rTpy5Ej9/ve/V2JiotxutySpSZMmCg0NlSQ9+eSTGjhwoNq2bavDhw9r6tSpCgoK0rBhw/y5KwCABsavryA/++wzde/e3XuJRnp6urp3764pU6ZIko4cOeJzBurLL7+ssrIyPfTQQ4qKivIujz32mLfm4MGDGjZsmGJiYnTPPffommuu0aZNm9SyZUt/7goAoIEJMMaY+m6irnk8HoWGhmpE+HUKDrzs3mUGasVHbdrUdwuA35SXl2nP55tUVFQkp9Ppl22QDgAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFgQkAAAWBCQAABYEJAAAFj4NSA//PBDDRw4UNHR0QoICNC6deuqrM/JyVFAQEClxe12+9RlZmaqXbt2CgkJUWJiorZs2eLHvQAANER+DciSkhLFx8crMzOzWuvt3r1bR44c8S6tWrXyPrdq1Sqlp6dr6tSp2rp1q+Lj45WSkqKjR4/WdvsAgAaskT8n79+/v/r371/t9Vq1aqWwsDDrc88995zGjBmjtLQ0SdKCBQv0zjvvaPHixZo0aZJ1ndLSUpWWlnofFxUVSZLOmAqpotrtAVeE8vKy+m4B8Jtzv9/GGL9tw68BWVMJCQkqLS3VjTfeqGnTpunnP/+5JOnMmTPKy8tTRkaGtzYwMFDJycnKzc0973yzZs3S9OnTK42v/O5w7TcPXC5OHqzvDgC/O3HihEJDQ/0y92UVkFFRUVqwYIF69uyp0tJSvfLKK+rTp482b96sm266ScePH1d5ebkiIyN91ouMjNTXX3993nkzMjKUnp7ufVxYWKi2bdtq//79fjuw/uDxeNS6dWsdOHBATqezvtu5aFdq39KV2zt91y36rntFRUVq06aNwsPD/baNyyogY2JiFBMT43186623at++fXr++ef1P//zPzWe1+FwyOFwVBoPDQ294n4pJMnpdNJ3HbtSe6fvukXfdS8w0H+n0lz2l3n06tVLe/fulSRFREQoKChIBQUFPjUFBQVyuVz10R4A4Cp12Qfk9u3bFRUVJUkKDg5Wjx49lJ2d7X2+oqJC2dnZSkpKqq8WAQBXIb++xVpcXOx99SdJ+fn52r59u8LDw9WmTRtlZGTo0KFDWr58uSRp/vz5at++vbp27aoffvhBr7zyit5//31t2LDBO0d6erpGjhypnj17qlevXpo/f75KSkq8Z7VeDIfDoalTp1rfdr2c0Xfdu1J7p++6Rd91ry56DzB+PEc2JydHd9xxR6XxkSNHaunSpRo1apS++eYb5eTkSJLmzp2rl19+WYcOHVLTpk3VrVs3TZkypdIcL774op599lm53W4lJCTohRdeUGJior92AwDQAPk1IAEAuFJd9p9BAgBQHwhIAAAsCEgAACwISAAALK7KgDx58qSGDx8up9OpsLAwjR49WsXFxVWu06dPn0q32XrwwQd9avbv368BAwaoadOmatWqlSZMmKCystr9Qujq9n7y5Ek98sgjiomJUZMmTdSmTRs9+uij3i9kP8d2G7GVK1fWuM/q3nJszZo16tKli0JCQhQXF6f169f7PG+M0ZQpUxQVFaUmTZooOTlZe/bsqXF/tdH3woULdfvtt6tFixZq0aKFkpOTK9WPGjWq0nFNTU2t176XLl1aqaeQkBCfmro63tXt3fb3MCAgQAMGDPDW+PuYV/c2fdKPZ+zfdNNNcjgc6tSpk5YuXVqppi5u01fd3teuXas777xTLVu2lNPpVFJSkt59912fmmnTplU63l26dKnXvuvs1ojmKpSammri4+PNpk2bzP/+7/+aTp06mWHDhlW5Tu/evc2YMWPMkSNHvEtRUZH3+bKyMnPjjTea5ORks23bNrN+/XoTERFhMjIy6rX3HTt2mF/96lfmrbfeMnv37jXZ2dmmc+fO5u677/apk2SWLFnis3/ff/99jXpcuXKlCQ4ONosXLzZffvmlGTNmjAkLCzMFBQXW+o8//tgEBQWZuXPnmq+++so8/fTTpnHjxmbHjh3emtmzZ5vQ0FCzbt068/nnn5t//dd/Ne3bt69xj7XR97333msyMzPNtm3bzK5du8yoUaNMaGioOXjwoLdm5MiRJjU11ee4njx5stZ6rknfS5YsMU6n06cnt9vtU1MXx7smvZ84ccKn7507d5qgoCCzZMkSb42/j/n69evNf/7nf5q1a9caSeaNN96osv7vf/+7adq0qUlPTzdfffWV+cMf/mCCgoJMVlaWt6a6x6Guen/sscfMnDlzzJYtW8z//d//mYyMDNO4cWOzdetWb83UqVNN165dfY73sWPH6rXvDz74wEgyu3fv9umrvLzcW1Mbx/yqC8ivvvrKSDKffvqpd+yvf/2rCQgIMIcOHTrver179zaPPfbYeZ9fv369CQwM9PmH5qWXXjJOp9OUlpbWa+//bPXq1SY4ONicPXvWO3Yxv3QXq1evXuahhx7yPi4vLzfR0dFm1qxZ1vp77rnHDBgwwGcsMTHR/Md//IcxxpiKigrjcrnMs88+632+sLDQOBwOs2LFilrpuSZ9/7OysjLTvHlzs2zZMu/YyJEjzaBBg2qtR5vq9r1kyRITGhp63vnq6ngbc+nH/PnnnzfNmzc3xcXF3rG6OObnXMzfm6eeesp07drVZ2zIkCEmJSXF+/hSj0NN1PTvfGxsrJk+fbr38dSpU018fHztNXYB1QnI77777rw1tXHMr7q3WHNzcxUWFqaePXt6x5KTkxUYGKjNmzdXue5rr72miIgI3XjjjcrIyNDp06d95o2Li/O5k0hKSoo8Ho++/PLLeu/9p4qKiuR0OtWoke8XJT300EOKiIhQr169tHjx4hrdR+3cLceSk5O9Yxe65Vhubq5PvfTjsTtXn5+fL7fb7VMTGhqqxMTEKm9j5u++/9np06d19uzZSncPyMnJUatWrRQTE6Nx48bpxIkTtdLzpfRdXFystm3bqnXr1ho0aJDP72hdHO9L6f2nFi1apKFDh6pZs2Y+4/485tV1od/v2jgOdaWiokKnTp2q9Du+Z88eRUdHq0OHDho+fLj2799fTx36SkhIUFRUlO688059/PHH3vHaOuaX1d08aoPb7VarVq18xho1aqTw8PBK70//1L333qu2bdsqOjpaX3zxhSZOnKjdu3dr7dq13nltt9k691x99v5Tx48f18yZMzV27Fif8RkzZuiXv/ylmjZtqg0bNug3v/mNiouL9eijj1arx5rccux8x+7cPp37s6qaS1XTW6X91MSJExUdHe3zly41NVW/+tWv1L59e+3bt0+//e1v1b9/f+Xm5iooKKhe+o6JidHixYvVrVs3FRUVad68ebr11lv15Zdf6rrrrquT413T3n9qy5Yt2rlzpxYtWuQz7u9jXl3n+/32eDz6/vvv9d13313y715dmTdvnoqLi3XPPfd4xxITE7V06VLFxMToyJEjmj59um6//Xbt3LlTzZs3r5c+/XVrxH92xQTkpEmTNGfOnCprdu3aVeP5fxoocXFxioqKUt++fbVv3z517NixxvNK/u/9HI/HowEDBig2NlbTpk3zeW7y5Mnen7t3766SkhI9++yz1Q7Ihmr27NlauXKlcnJyfE54GTp0qPfnuLg4devWTR07dlROTo769u1bH60qKSnJ58v7b731Vt1www3605/+pJkzZ9ZLTzWxaNEixcXFqVevXj7jl+Mxvxq8/vrrmj59ut58802f/6j379/f+3O3bt2UmJiotm3bavXq1Ro9enR9tOq3WyP+sysmIMePH69Ro0ZVWdOhQwe5XC4dPXrUZ7ysrEwnT56s1i2xzn236969e9WxY0e5XK5KZ0Cdu+3Wheati95PnTql1NRUNW/eXG+88YYaN25cZX1iYqJmzpyp0tLSan3Zb01uOeZyuaqsP/dnQUGB984t5x4nJCRcdG+13fc58+bN0+zZs/Xee++pW7duVdZ26NBBERER2rt3b638Y10bt3hr3Lixunfv7r1xQF0cb+nSei8pKdHKlSs1Y8aMC26nto95dZ3v99vpdKpJkyYKCgq67G/Tt3LlSj3wwANas2ZNpbeL/1lYWJiuv/56nxtRXA569eqljz76SFLt3RrxivkMsmXLlurSpUuVS3BwsJKSklRYWKi8vDzvuu+//74qKiqq9YXm27dvlyTvPyBJSUnasWOHT4Bt3LhRTqdTsbGx9dq7x+NRv379FBwcrLfeeqvSKf3n278WLVpU+5vwa3LLsaSkJJ966cdjd66+ffv2crlcPjUej0ebN2+utduY1fRWaXPnztXMmTOVlZXl89nw+Rw8eFAnTpzwCZ766PunysvLtWPHDm9PdXG8L7X3NWvWqLS0VPfdd98Ft1Pbx7y6LvT7fbnfpm/FihVKS0vTihUrfC6nOZ/i4mLt27ev3o73+fjl1ogXfTrPFSQ1NdV0797dbN682Xz00Uemc+fOPpdKHDx40MTExJjNmzcbY4zZu3evmTFjhvnss89Mfn6+efPNN02HDh3ML37xC+865y7z6Nevn9m+fbvJysoyLVu29MtlHtXpvaioyCQmJpq4uDizd+9en1Oey8rKjDHGvPXWW2bhwoVmx44dZs+ePeaPf/yjadq0qZkyZUqNely5cqVxOBxm6dKl5quvvjJjx441YWFh3jN877//fjNp0iRv/ccff2waNWpk5s2bZ3bt2mWmTp1qvcwjLCzMvPnmm+aLL74wgwYN8stlHtXpe/bs2SY4ONj8+c9/9jmup06dMsYYc+rUKfPkk0+a3Nxck5+fb9577z1z0003mc6dO5sffvih3vqePn26effdd82+fftMXl6eGTp0qAkJCTFffvmlz775+3jXpPdzbrvtNjNkyJBK43VxzE+dOmW2bdtmtm3bZiSZ5557zmzbts18++23xhhjJk2aZO6//35v/bnLPCZMmGB27dplMjMzrZd5VHUcakt1e3/ttddMo0aNTGZmps/veGFhobdm/PjxJicnx+Tn55uPP/7YJCcnm4iICHP06NF66/v5558369atM3v27DE7duwwjz32mAkMDDTvvfeet6Y2jvlVGZAnTpwww4YNMz/72c+M0+k0aWlp3n/UjDEmPz/fSDIffPCBMcaY/fv3m1/84hcmPDzcOBwO06lTJzNhwgSf6yCNMeabb74x/fv3N02aNDERERFm/PjxPpdS1Efv5053ti35+fnGmB8vFUlISDA/+9nPTLNmzUx8fLxZsGCBzzVD1fWHP/zBtGnTxgQHB5tevXqZTZs2eZ/r3bu3GTlypE/96tWrzfXXX2+Cg4NN165dzTvvvOPzfEVFhZk8ebKJjIw0DofD9O3b1+zevbvG/dVG323btrUe16lTpxpjjDl9+rTp16+fadmypWncuLFp27atGTNmTK3/o1fdvh9//HFvbWRkpLnrrrt8rmszpu6Od3V7N8aYr7/+2kgyGzZsqDRXXRzz8/2dOtfnyJEjTe/evSutk5CQYIKDg02HDh18rts8p6rjUF+99+7du8p6Y368ZCUqKsoEBweba6+91gwZMsTs3bu3XvueM2eO6dixowkJCTHh4eGmT58+5v33368076Uec253BQCAxRXzGSQAAHWJgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwIKABADAgoAEAMCCgAQAwOL/AajeyulGCjknAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bbb=np.array([[[1,200,3],[40,5,6]],[[100,20,30],[40,50,60]]])\n",
    "print('bbb.shape: ',bbb.shape)\n",
    "ccc=np.array([[[100,20,30],[40,50,60]],[[100,200,30],[100,50,60]]])\n",
    "print('水平',np.hstack((bbb,ccc)))\n",
    "print('水平',np.concatenate((bbb,ccc),axis=1))\n",
    "print('垂直',np.vstack((bbb,ccc)))\n",
    "print('垂直',np.concatenate((bbb,ccc),axis=0))\n",
    "print('深度',np.dstack((bbb,ccc)))\n",
    "print('深度',np.concatenate((bbb,ccc),axis=2))\n",
    "plt.imshow(bbb)\n",
    "# plt.imshow(np.hstack((bbb,ccc)))\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
